/**
 * <copyright>
 * </copyright>
 *
 * $Id: Usecase.java 483 2007-04-03 03:07:06Z petterei $
 */
package biz.modelx.precise.usecase.ui.model.eusecase;

import biz.modelx.precise.ui.model.eprecise.PNameable;

import org.eclipse.emf.common.util.EList;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Usecase</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link biz.modelx.precise.usecase.ui.model.eusecase.Usecase#getInclude <em>Include</em>}</li>
 *   <li>{@link biz.modelx.precise.usecase.ui.model.eusecase.Usecase#getExtend <em>Extend</em>}</li>
 *   <li>{@link biz.modelx.precise.usecase.ui.model.eusecase.Usecase#getGeneralization <em>Generalization</em>}</li>
 *   <li>{@link biz.modelx.precise.usecase.ui.model.eusecase.Usecase#getActors <em>Actors</em>}</li>
 * </ul>
 * </p>
 *
 * @see biz.modelx.precise.usecase.ui.model.eusecase.EusecasePackage#getUsecase()
 * @model
 * @generated
 */
public interface Usecase extends PNameable {
	/**
	 * Returns the value of the '<em><b>Include</b></em>' reference list.
	 * The list contents are of type {@link biz.modelx.precise.usecase.ui.model.eusecase.Usecase}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Include</em>' reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Include</em>' reference list.
	 * @see biz.modelx.precise.usecase.ui.model.eusecase.EusecasePackage#getUsecase_Include()
	 * @model type="biz.modelx.precise.usecase.ui.model.eusecase.Usecase" ordered="false"
	 * @generated
	 */
	EList<Usecase> getInclude();

	/**
	 * Returns the value of the '<em><b>Extend</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Extend</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Extend</em>' reference.
	 * @see #setExtend(Usecase)
	 * @see biz.modelx.precise.usecase.ui.model.eusecase.EusecasePackage#getUsecase_Extend()
	 * @model
	 * @generated
	 */
	Usecase getExtend();

	/**
	 * Sets the value of the '{@link biz.modelx.precise.usecase.ui.model.eusecase.Usecase#getExtend <em>Extend</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Extend</em>' reference.
	 * @see #getExtend()
	 * @generated
	 */
	void setExtend(Usecase value);

	/**
	 * Returns the value of the '<em><b>Generalization</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Generalization</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Generalization</em>' reference.
	 * @see #setGeneralization(Usecase)
	 * @see biz.modelx.precise.usecase.ui.model.eusecase.EusecasePackage#getUsecase_Generalization()
	 * @model
	 * @generated
	 */
	Usecase getGeneralization();

	/**
	 * Sets the value of the '{@link biz.modelx.precise.usecase.ui.model.eusecase.Usecase#getGeneralization <em>Generalization</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Generalization</em>' reference.
	 * @see #getGeneralization()
	 * @generated
	 */
	void setGeneralization(Usecase value);

	/**
	 * Returns the value of the '<em><b>Actors</b></em>' reference list.
	 * The list contents are of type {@link biz.modelx.precise.usecase.ui.model.eusecase.Actor}.
	 * It is bidirectional and its opposite is '{@link biz.modelx.precise.usecase.ui.model.eusecase.Actor#getUsecases <em>Usecases</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Actors</em>' reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Actors</em>' reference list.
	 * @see biz.modelx.precise.usecase.ui.model.eusecase.EusecasePackage#getUsecase_Actors()
	 * @see biz.modelx.precise.usecase.ui.model.eusecase.Actor#getUsecases
	 * @model type="biz.modelx.precise.usecase.ui.model.eusecase.Actor" opposite="usecases" ordered="false"
	 * @generated
	 */
	EList<Actor> getActors();

} // Usecase
